Conventional relational database languages generally require users to specify all tables participating in a database query and the join conditions that link those tables into a join graph. To do this, users should be familiar with the database schemas and understand the relationships between tables in the databases. Although query tools are available that provide users with database schema information and support graphical ways of linking tables into a join graph for database queries, these tools do not automatically generate join graphs for users, except under very limited conditions. Thus, performing database queries continues to be difficult for users in general, especially in applications involving complex database schemas.